#ifndef _CAMERA_HPP_
#define _CAMERA_HPP_

#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/freeglut.h>
#include "SceneObject.hpp"
#include <vector>
#include "siut/simd/Vec4f.hpp"

class Camera : public SceneObject
{
	public:
		Camera();
		~Camera();

    void moveRight(float s);
    void moveLeft(float s);
    void moveUp(float s);
    void moveDown(float s);
    void moveBackward(float s);
    void moveForward(float s);
	void setRot(float h, float v);
	void move(); // WASD-and-mouse camera behaviour.
	void getRot(float &h, float &v);
    
  protected:
    void privateInit();
		void privateRender();
		void privateUpdate();

	private:
		float horizAng;
		float vertiAng;
		siut::simd::Vec4f dir;
		siut::simd::Vec4f pos;
  
};

#endif //_CAMERA_HPP_

